/** @file               sw_mbx.h
 *  @copyright          Copyright (C) 2006-2026 flyfish (tenggui_fu@126.com)
 *  @brief              This file is part of the swallow library
 *  @author             $Author: flyfish $
 *  @version            $Rev: 385 $
 *  @date               $Date: 2016-12-22 00:12:05 +0800 (周四, 22 12月 2016) $
 */
#ifndef __SW_MBX_H__
#define __SW_MBX_H__

#ifdef __cplusplus
extern "C" {
#endif

typedef SW_VOID *SW_MBX;
#define SW_INVALID_MBX NULL

SW_API SW_RET SW_InitMbxAPI(SW_VOID);
SW_API SW_RET SW_RunMbxAPI(SW_VOID);
SW_API SW_RET SW_StopMbxAPI(SW_VOID);
SW_API SW_RET SW_ExitMbxAPI(SW_VOID);
SW_API SW_MBX SW_CreateMbx(SW_UINT32 msgMax);
SW_API SW_RET SW_DeleteMbx(SW_MBX mbx);
SW_API SW_RET SW_SendMbxMsg(SW_MBX mbxDst, SW_MBX mbxSrc, SW_MSG msg, SW_MSG *pMsgAck);
SW_API SW_RET SW_TrySendMbxMsg(SW_MBX mbxDst, SW_MBX mbxSrc, SW_MSG msg, SW_MSG *pMsgAck);
SW_API SW_RET SW_TimeSendMbxMsg(SW_MBX mbxDst, SW_MBX mbxSrc, SW_MSG msg, SW_MSG *pMsgAck, SW_UINT32 msecSend, SW_UINT32 msecRecv);
SW_API SW_RET SW_RecvMbxMsg(SW_MBX mbx, SW_MSG *pMsg);
SW_API SW_RET SW_TryRecvMbxMsg(SW_MBX mbx, SW_MSG *pMsg);
SW_API SW_RET SW_TimeRecvMbxMsg(SW_MBX mbx, SW_MSG *pMsg, SW_UINT32 msec);
SW_API SW_RET SW_ClearMbx(SW_MBX mbx);

#ifdef __cplusplus
}
#endif

#endif

